//
// Created by ASUS on 2024/1/10.
//
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MX=1e5+10;

int a[MX];//原始数据

struct Node{
	int l,r;//区间范围
	ll s;//区间和
	int lazy;//懒标记
}tr[4*MX];

//求和操作
void pushup(int i){
	tr[i].s=tr[2*i].s+tr[2*i+1].s;
}
//更新懒标记
void pushdown(int i){
	if(tr[i].lazy){
		tr[2*i].lazy+=tr[i].lazy;
		tr[2*i].s+=1ll*tr[i].lazy*(tr[2*i].r-tr[2*i].l+1);
		tr[2*i+1].lazy+=tr[i].lazy;
		tr[2*i+1].s+=1LL*tr[i].lazy*(tr[2*i+1].r-tr[2*i+1].l+1);
		tr[i].lazy=0;
	}
}
//建树
void build(int i,int l,int r){
	tr[i].l=l,tr[i].r=r;
	if(l==r){
		tr[i].s=a[l];
		return;
	}
	int mid=l+(r-l)/2;
	build(i*2,l,mid);
	build(i*2+1,mid+1,r);
	pushup(i);
}
//查询
ll query(int i,int l,int r){
	if(tr[i].l>r||tr[i].r<l) return 0;
	if(tr[i].l>=l&&tr[i].r<=r){
		return tr[i].s;
	}
	pushdown(i);
	return query(2*i,l,r)+query(2*i+1,l,r);
}
//更新
void update(int i,int l,int r,int v){
	if(tr[i].l>r||tr[i].r<1) return ;
	if(tr[i].l>=l&&tr[i].r<=r){
		tr[i].s+=v;
		return ;
	}
	pushdown(i);
	update(2*i,l,r,v);
	update(2*i+1,l,r,v);
	pushup(i);
}

int main(){
	vector<int> nums{1,2,3,4,5,6,7};
	for(int i=1;i<=7;i++) a[i]=nums[i-1];
	build(1,1,7);//从1号节点开始建树
	cout<<query(1,1,7);
	return 0;
}